package ar.uba.fi.algo3.algoflight.model.pistas;

import java.util.List;

import ar.uba.fi.algo3.algoflight.model.Posicion;
import ar.uba.fi.algo3.algoflight.model.interfaces.Aterrizable;
import ar.uba.fi.algo3.algoflight.model.utils.Constantes;
import fiuba.algo3.titiritero.modelo.ObjetoPosicionable;

public abstract class Pista implements Aterrizable, ObjetoPosicionable {
	private Posicion posicionPista;
	private List<Posicion> coordenadasDeAterrizaje;
	private double rotacion;

	public Pista(Posicion posicion, List<Posicion> coordenadasDeAterrizaje) {
		this.posicionPista = posicion;
		this.coordenadasDeAterrizaje = coordenadasDeAterrizaje;
		this.rotacion = 0;
	}

	public List<Posicion> getCoordenadasDeAterrizaje() {
		return coordenadasDeAterrizaje;
	}

	public boolean posicionDeAterrizajeValida(Posicion posicion) {
		for (Posicion pos : coordenadasDeAterrizaje) {
			if (pos.estaCercaDe(posicion,
					Constantes.TOLERANCIA_CERCANIA_ATERRIZAJE)) {
				return true;
			}
		}
		return false;
	}

	public double getRotacion() {
		return rotacion;
	}

	public void setRotacion(double rotacion) {
		this.rotacion = rotacion;
	}

	@Override
	public int getX() {
		return Math.round(this.posicionPista.getCoordX());
	}

	@Override
	public int getY() {
		return Math.round(this.posicionPista.getCoordY());
	}
}
